#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int dx[8] = {-2,-1,1,2,2,1,-1,-2},dy[8] = {1,2,2,1,-1,-2,-2,-1};

int main()
{
	int C,R;
	cin>>C>>R;
	
	vector<vector<char>> arr(R,vector<char>(C));
	vector<vector<int>> vis(R,vector<int>(C));
	pair<int,int> st,en;
	for(int i=0;i<R;i++)
	{
		for(int j=0;j<C;j++)
		{
			cin>>arr[i][j];
			if(arr[i][j]=='K')
				st={i,j};
			else if(arr[i][j]=='H')
			{
//			    cout<<arr[i][j]<<endl;
				en={i,j};
//				cout<<i<<' '<<j<<endl;
			}	
		}		
	}

	vis[st.first][st.second]=1;
	queue<pair<int,int>> q;
	q.push(st);
	int ret=0;
	bool flg=true;
	if(en==st)
	    flg=false;
	while(q.size() && flg)
	{
		ret++;
		int s=q.size();
		for(int z=0;z<s && flg ;z++)
		{
			auto [x,y]=q.front();
			q.pop();
			for(int i=0;i<8 && flg;i++)
			{
				int nx=x+dx[i];
				int ny=y+dy[i];
				if(nx<0 || nx>=R || ny<0 || ny>=C || arr[nx][ny]=='*' || vis[nx][ny])
					continue;	
				q.push({nx,ny})	;	
				vis[nx][ny]=1;	
				if(nx==en.first && ny==en.second)
				{
					flg=false;
					break;
				}
					
			}		
		}
		
	}
	
	cout<<ret<<endl;
	
	return 0;
}
